 1.数据倾斜
   
   MR是一个并行处理的任务，整个Job花费的时间是作业中所有Task最慢的那个了。
   为什么会这样呢？为什么会有的Task快有的Task慢？
   数据倾斜，每个Reduce处理的数据量不是同一个级别的，所有数据量少的Task已经跑完了，数据
量大的Task则需要更多时间。
   有可能就是某些作业所在的NodeManager有问题或者container有问题，导致作业执行缓慢。
   数据倾斜
   那么为什么会产生数据倾斜呢？
   数据本身就不平衡，所以在默认的hashpartition时造成分区数据不一致问题
   那如何解决数据倾斜的问题呢？
   默认的是hash算法进行分区，我们可以尝试自定义分区，修改分区实现逻辑，结合业务特点，使
得每个分区数据基本平衡
   可以尝试修改分区的键，让其符合hash分区，并且使得最后的分区平衡，比如在key前加随机数n-
key。
   抽取导致倾斜的key对应的数据单独处理。
   如果不是数据倾斜带来的问题，而是节点服务有问题造成某些map和reduce执行缓慢呢？
   使用推测执行找个其他的节点重启一样的任务竞争，谁快谁为准。推测执行时以空间换时间的优化。
会带来集群资源的浪费，会给集群增加压力。